Network Map
Cinchy comes out of the box with a system applet called Network Map, which is a visualization of your data on the platform and how everything interconnects.
My Data Network is another way to view and navigate the data you have access to within Cinchy.
Each node represents a table you have access to within Cinchy, and each edge is one link between two tables. The size of the table is determined by the number of links referencing that table. The timeline on the bottom allows you to check out your data network at a point in the past and look at the evolution of your network.
It uses the user's entitlements for viewable tables and linked columns.
When you click on a node, you will see its description in the top right hand corner. You can click the Open button to navigate to the table.
You will find the Network Map data experience on the Homepage.
Custom network visualizer
You can also set up a custom network visualizer in your platform.
Prerequisites
- You must have Insert access to the [Cinchy].[Network] table.
Setting up a Network Visualizer
- Navigate to the [Cinchy].[Networks] system table.
- In a new row, input the following:
Column Name | Description | Example |
---|---|---|
Name | Mandatory. A name for your visualizer. | Network Map v2 |
Nodes CQL | Nodes are data points in your network. The Nodes CQL defines which data points to include. | Example here. |
Nodes Query Result Type | This column defines whether you want to include Approved and/or Draft Data in your results. | Approved Data Only |
Nodes Groups CQL | Optional. Nodes groups organize your data together into categories. They appear as a colour-coded list of groups under the Objects tab on the left of the Data Network UI. | Example here. |
Nodes Groups Query Result Type | This column defines whether you want to include Approved and/or Draft Data in your results. | Approved Data Only |
Edges | The Edges query defines the relationships between your nodes. | Example here. |
Edges Query Result Type | This column defines whether you want to include Approved and/or Draft Data in your results. | Approved Data Only |
Slicers | Optional. Slicers help to filter your data. They appear as a list of domains and tables on the left of the Data Network UI. Slicers are based on the columns included in your nodes query, i.e. if your query calls to the [Roles] table, you can add a slicer to filter for data pertaining to certain roles. | Example here. |
Timeline Start Date CQL | This column can be used in the event that you want to query for data in relation to a specific timeframe. If no start or end date is specified, the data network is just shown as is. If there's a start or end date, the other CQL queries must have a @date parameter and that will be used to render the data network at a point in time | Example here. |
Timelines Start Date Query Result Type | This column defines whether you want to include Approved and/or Draft Data in your results. | Approved Data Only |
Timeline End Date CQL | This column can be used in the event that you want to query for data in relation to a specific timeframe. If no start or end date is specified, the data network is just shown as is. If there's a start or end date, the other CQL queries must have a @date parameter and that will be used to render the data network at a point in time | Example here. |
Timelines End Date Query Result Type | This column defines whether you want to include Approved and/or Draft Data in your results. | Approved Data Only |
Node Icon | Defines what the node icon looks like on in the Objects tab on the left of the Data Network UI. | fa fa-user |
Owners | Identifies an owner(s) of the data network. | |
Owner Groups | Identifies a group(s) as the owner of the data network. | HR |
Users | Identifies which user(s) have access to view the data network. | |
User Groups | Identifies which user group(s) have access to view the data network. | Employees |
CQL Parameters
This section details the parameters to use when creating your CQL queries.
Nodes CQL Parameters
Parameter | Description |
---|---|
id | Id for the node. This will be used by the edges to define the relationships. |
title | This is the text that's displayed when hovering on a node. |
label | The label shown below the node. |
value | The visual size of the node relative to other nodes. |
mass | The gravitational pull of a node. Unless you really want to customize the visualizer, it's recommended to keep this the same value as the value. |
group | Optionally you can associate a node with a group. |
color | Optional hex code for the color of a node. The node will take the color of the group if a color isn't specified for the node. |
description | The description shows up in the top right hand corner when you click a node. |
nodeURL | Page to display when you click the open button next to the description. |
Nodes Groups CQL Parameters
Parameter | Description |
---|---|
sub network | Name for the group |
color | Hex value for the color of the group |
Edges CQL Parameters
Parameter | Description |
---|---|
id | Id for the edge. |
label | Label that shows up on the edge. |
from | Originating node id. |
to | Target node id. Can be the same as the from node, it will show a loop back into the same node. |
showArrowTo | Set this to True if you want to show the direction of the relationship. |
showArrowFrom | Generally should only be used for bi-directional relationships along with the arrow to. |
Slicers Parameters
To use slicers, you must define the slicers in the Slicers column and add the additional attributes to the nodes query.
Parameter | Description |
---|---|
attribute | The column name from the nodes query |
displayName | What shows up in the visualizer |
[
{
"attribute": "slice1",
"displayName": "First Slicer"
},
{
"attribute": "slice2",
"displayName": "Second Slicer"
}
]
Timeline CQL Parameters
If no start or end date is specified, the data network is just shown as is. If there's a start or end date, the other CQL queries must have a @date parameter and that will be used to render the data network at a point in time.
You can use @date between [Modified] and [Replaced] with a version history query to see data at a specific time. You can also simply use @date > [Created] if it's an additive system.
Timeline start date CQL should return a date value as startDate
.
Timeline end date CQL should return a date value as endDate
.
Accessing your Network Map
Access your custom network at the following URL, inserting the Name of your visualizer as noted: <Cinchy URL>/Cinchy/apps/datanetworkvisualizer?network=<NAME>
Remember to use %20
if there are spaces in your custom network name. For example: <Cinchy URL>/Cinchy/apps/datanetworkvisualizer?network=sample%20custom%20network
It's highly recommended to add a new applet for each custom data network visualizer for ease of access.
Example network
This example creates a simple network map with sample data.
For ease of testing, save each of the following as Saved Queries. Then, call them in the Networks table as exec [Domain].[Saved Query Name]
.
Nodes Groups CQL
Open the query editor and save this query as "Nodes Groups CQL".
-- Sample Data
SELECT
[Sub Network] = 'Blue Network'
, [Color] = '#03a9f4'
INTO #TEMP
UNION SELECT
[Sub Network] = 'Green Network'
, [Color] = '#8bc34a'
-- Node Groups CQL
SELECT
t.[Sub Network] as 'sub network'
, t.[Color] as 'color'
FROM #TEMP t
Nodes CQL
Open the query editor and save this query as "Nodes CQL".
-- Sample Data
SELECT
[Id] = 'N01'
, [Title] = 'Hover text on the node.'
, [Label] = 'Purple Node 1 (Ax)'
, [Value] = 5
, [Mass] = 5
-- optional
, [Group] = 'Green Network'
, [Color] = '#ab47bc'
, [Description] = 'This description shows up in the top right hand corner when you select a node.'
, [Node URL] = 'https://www.cinchy.com'
, [Slicer 1] = 'A'
, [Slicer 2] = 'x'
INTO #TEMP
UNION SELECT
[Id] = 'N02'
, [Title] = 'Hover text on node 2.'
, [Label] = 'Node 2 (Ay)'
, [Value] = 10
, [Mass] = 10
-- optional
, [Group] = 'Green Network'
, [Color] = ''
, [Description] = 'This description shows up in the top right hand corner when you select a node.'
, [Node URL] = ''
, [Slicer 1] = 'A'
, [Slicer 2] = 'y'
UNION SELECT
[Id] = 'N03'
, [Title] = 'Hover text on node 3.'
, [Label] = 'Node 3 (Bx)'
, [Value] = 1
, [Mass] = 1
-- optional
, [Group] = 'Blue Network'
, [Color] = ''
, [Description] = ''
, [Node URL] = ''
, [Slicer 1] = 'B'
, [Slicer 2] = 'x'
UNION SELECT
[Id] = 'N04'
, [Title] = 'Hover text on node 4.'
, [Label] = 'Minimum Node 4 (y)'
, [Value] = 3
, [Mass] = 3
-- optional
, [Group] = ''
, [Color] = ''
, [Description] = ''
, [Node URL] = ''
, [Slicer 1] = ''
, [Slicer 2] = 'y'
UNION SELECT
[Id] = 'N05'
, [Title] = 'Hover text on node 4.'
, [Label] = 'Orphan Node 5 (By)'
, [Value] = 2
, [Mass] = 2
-- optional
, [Group] = ''
, [Color] = ''
, [Description] = ''
, [Node URL] = ''
, [Slicer 1] = 'B'
, [Slicer 2] = 'y'
-- Nodes CQL
SELECT
t.[Id] as 'id'
, t.[Title] as 'title'
, t.[Label] as 'label'
, t.[Value] as 'value'
, t.[Mass] as 'mass'
, t.[Group] as 'group'
, t.[Color] as 'color'
, t.[Description] as 'description'
, t.[Node URL] as 'nodeURL'
, t.[Slicer 1] as 'slice1'
, t.[Slicer 2] as 'slice2'
FROM #TEMP t
Edges CQL
Open the query editor and save this query as "Edges CQL".
-- Sample Data
SELECT
[Id] = 'E01'
, [Label] = 'Node 1 to Node 2, Double Arrows'
, [From] = 'N01'
, [To] = 'N02'
-- optional
, [Show Arrow To] = 'True'
, [Show Arrow From] = 'True'
INTO #TEMP
UNION SELECT
[Id] = 'E02'
, [Label] = 'Node 2 to Node 3, To Arrow'
, [From] = 'N02'
, [To] = 'N03'
-- optional
, [Show Arrow To] = 'True'
, [Show Arrow From] = 'False'
UNION SELECT
[Id] = 'E03'
, [Label] = 'Node 1 to Node 4, From Arrow'
, [From] = 'N01'
, [To] = 'N04'
-- optional
, [Show Arrow To] = ''
, [Show Arrow From] = 'True'
UNION SELECT
[Id] = 'E04'
, [Label] = 'Node 3 to Node 3, No Arrow'
, [From] = 'N03'
, [To] = 'N03'
-- optional
, [Show Arrow To] = ''
, [Show Arrow From] = ''
-- Edges CQL
SELECT
t.[Id] as 'id'
, t.[Label] as 'label'
, t.[From] as 'from'
, t.[To] as 'to'
, t.[Show Arrow To] as 'showArrowTo'
, t.[Show Arrow From] as 'showArrowFrom'
FROM #TEMP t
The data entered into the [Cinchy].[Networks] table is as follows:
Column Name | Example |
---|---|
Name | Sample Custom Network |
Nodes CQL | exec [Documentation].[Nodes CQL] |
Nodes Query Result Type | Approved Data Only |
Nodes Groups CQL | exec [Documentation].[Nodes Groups CQL] |
Nodes Groups Query Result Type | Approved Data Only |
Edges | exec [Documentation].[Edges CQL] |
Edges Query Result Type | Approved Data Only |
Node Icon | fa fa-user |
Owner Groups | Admin |
User Groups | Employees |
Access your custom network at the following URL, inserting the Name of your visualizer as noted: <Cinchy URL>/Cinchy/apps/datanetworkvisualizer?network=<NAME>
Remember to use %20
if there are spaces in your custom network name. For example: <Cinchy URL>/Cinchy/apps/datanetworkvisualizer?network=sample%20custom%20network
It's highly recommended to add a new applet for each custom data network visualizer for ease of access.
Example
In this example, we will be creating a custom data visualizer to act as an Organization Chart showing the relationship between employees.
The data entered into the [Cinchy].[Networks] table is as follows:
Column Name | Example |
---|---|
Name | Cinchy Org Chart |
Nodes CQL | Example here. |
Nodes Query Result Type | Approved Data Only |
Nodes Groups CQL | Example here. |
Nodes Groups Query Result Type | Approved Data Only |
Edges | Example here. |
Edges Query Result Type | Approved Data Only |
Slicers | Example here. |
Node Icon | fa fa-user |
Owner Groups | HR |
User Groups | Employees |
Nodes CQL Example (2)
SELECT
x.*,
x.[value] as 'mass'
FROM (
SELECT
[group] = [Job].[Position].[Role].[Pillar].[Root Pillar].[Long Name],
[id] = [Cinchy Id],
[label] = [Person],
[description] = [Job].[Position].[Role],
[color] = [Job].[Position].[Role].[Pillar].[Root Pillar].[Colour].[Hex],
[Job Level] = [Job].[Position].[Role].[Job Level],
[Job Model] = [Job].[Model],
[Pillar] = ISNULL([Job].[Position].[Role].[Pillar].[Root Pillar].[Long Name], 'Unknown'),
[Role] = [Job].[Position].[Role],
[Personality] = ISNULL([Person].[Personality Summary], 'Unknown'),
[nodeURL] = CONCAT('https://cinchy.net/Cinchy/Apps/Integrated?appId=457&formId=36&rowId=', [Cinchy Id]),
--ROUND(ISNULL([Current Engagement Score], 0) + 1, 0) as 'value'
(
SELECT COUNT(*) FROM [Employee Success].[Employees]
WHERE [Deleted] IS NULL
AND ([End Date] IS NULL OR [End Date] > GETDATE())
AND (
[Reports To].[Cinchy Id] = emp.[Cinchy Id]
-- OR [Reports To].[Reports To].[Cinchy Id] = emp.[Cinchy Id]
-- OR [Reports To].[Reports To].[Reports To].[Cinchy Id] = emp.[Cinchy Id]
-- OR [Reports To].[Reports To].[Reports To].[Reports To].[Cinchy Id] = emp.[Cinchy Id]
)
) as 'value'
FROM [Employee Success].[Employees] emp
WHERE (emp.[End Date] IS NULL OR emp.[End Date] > GETDATE())
AND emp.[Deleted] IS NULL
) as x
where UPPER(x.[label]) NOT LIKE '%TEST%'
Nodes Groups CQL Example (2)
SELECT
[color] = [Root Pillar].[Colour].[Hex],
[sub network] = [Root Pillar].[Long Name]
FROM [Employee Success].[Pillars] pillars
WHERE pillars.[Deleted] IS NULL
AND [Cinchy Id] IN (
SELECT [Job].[Position].[Role].[Pillar].[Root Pillar].[Cinchy Id]
FROM [Employee Success].[Employees] emp
WHERE (emp.[End Date] IS NULL OR emp.[End Date] > GETDATE())
AND emp.[Deleted] IS NULL
)
ORDER BY [Long Name]
Edges CQL Example (2)
SELECT
[id] = CONCAT('E',CASE WHEN [Reports To].[Cinchy Id] IS NULL THEN 1 ELSE [Person].[Cinchy Id] END,'-',[Reports To].[Cinchy Id]),
[from] = [Cinchy Id],
[label] = 'Reports To',
[to] = [Reports To].[Cinchy Id],
[showArrowTo] = 'True'
FROM [Employee Success].[Employees] emp
WHERE (emp.[End Date] IS NULL OR emp.[End Date] > GETDATE())
AND emp.[Deleted] IS NULL
ORDER BY
[Reports To],
[Person]
Slicers CQL Example
[
{
"attribute": "Pillar",
"displayName": "Pillar"
},
{
"attribute": "Role",
"displayName": "Role"
},
{
"attribute": "Personality",
"displayName": "Personality"
},
{
"attribute": "Job Level",
"displayName": "Job Level"
},
{
"attribute": "Job Model",
"displayName": "Job Model"
}
]
It's highly recommended to add a new applet for each custom data network visualizer for ease of access.
Optional URL parameters
Cinchy version 5.2 added the ability to include new parameters on the URL path for your network visualizer to focus your node view. You can now add Target Node, Depth Level, and Max Depth Level Parameters, if you choose.
Example: <base url>/apps/datanetworkvisualizer?targetNode=\&maxDepth=\&depthLevel=
- Target Node: Using the Target Node parameter defines which of your nodes will be the central node from which all connections branch from.
- Target Node uses the TableID number, which you can find in the URL of any table.
- Example:
<base url>/apps/datanetworkvisualizer?targetNode=8
will show TableID 8 as the central node
- Max Depths: This parameter defines how many levels of network hierarchy you want to display.
- Example:
<base url>/apps/datanetworkvisualizer?maxDepth=2
will only show you two levels of connections.
- Example:
- Depth Level: Depth Level is a UI parameter that will highlight/focus on a certain depth of connections.
- Example:
<base url>/apps/datanetworkvisualizer?DepthLevel=1
will highlight all first level network connections, while the rest will appear muted.
- Example:
The below example visualizer uses the following URL: <base url>/apps/datanetworkvisualizer?targetNode=8\&maxDepth=2\&depthLevel=1
- It shows Table ID 8 ("Groups") as the central node.
- It only displays the Max Depth of 2 connections from the central node.
- It highlights the nodes that have a Depth Level of 1 from the central node.